/*
 * @Description: 审批规则
 * @Author: DHL
 * @Date: 2022-11-18 23:24:41
 * @LastEditors: DHL
 * @LastEditTime: 2022-11-19 19:50:29
 */
import { UserModel } from '/@/api/system/model/userModel'

/**
 * 审批规则
 */
export interface ApprovalRulesModel {
  /**
   * 审批类型
   * manualApproval - 人工审批
   * autoBypass - 自动通过
   * autoByreject - 自动拒绝
   */
  category: string

  /**
   * 分配规则
   */
  assignedRules: AssignedRulesModel

  /**
   * 多人审批时采用的审批方式
   */
  multiInstanceRules: MultiInstanceRulesModel

  /**
   * 审批超时限制规则
   */
  timeLimitRules: TimeLimitRulesModel
}

/**
 * 分配规则
 */
export interface AssignedRulesModel {
  /**
   * 审批人类型
   * specified - 指定成员
   * optional - 发起人自选
   * continuousMultistage - 连续多级主管
   * supervisor - 直属主管
   * initiator - 发起人自己
   */
  type: string

  /**
   * 发起人自选方式
   * one - 自选一个人
   * more - 自选多个人
   */
  optionalWay: Nullable<string>

  /**
   * 审批用户集合
   */
  assigneeList: Array<UserModel>

  /**
   * 岗位主键
   */
  postId: Nullable<string>

  /**
   * 是否勾选同时不超过发起人向上的层级
   */
  levelChecked: boolean

  /**
   * 同时不超过发起人向上的层级
   */
  level: Nullable<string>
}

/**
 * 多人审批时采用的审批方式
 */
export interface MultiInstanceRulesModel {
  /**
   * 多人审批时采用的审批方式
   */
  approvalWay: string
}

/**
 * 审批超时限制规则
 */
export interface TimeLimitRulesModel {
  /**
   * 时间单位 M分钟、H小时、D天
   */
  timeoutUnit: string

  /**
   * 时间值
   */
  timeoutValue: number

  /**
   * 超时后的处理规则
   * PASS 自动通过、REFUSE 自动驳回、NOTIFY 发送通知进行提醒
   */
  handlerType: string

  /**
   * 超时后的处理规则
   * 是否只提醒一次
   */
  handlerNotifyOnce: string

  /**
   * 超时后的处理规则
   * 重复提醒，几小时提醒一次
   */
  handlerNotifyHour: number
}
